/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import BancoDeDados.CriaConexao;
import Logica.Laboratorio;
import Logica.Sala;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Pedro H
 */
public class PesquisaDAO {

    private Connection conexao;

    public PesquisaDAO() throws SQLException {
        this.conexao = (Connection) CriaConexao.getConexao();
    }

    public List<Laboratorio> getListaIDL(int id) throws SQLException {

        String sql = "select *from laboratorio where id like ? "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        stmt.setInt(1, id);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Laboratorio> minhaLista = new ArrayList<Laboratorio>();

        while (rs.next()) {
            Laboratorio lab = new Laboratorio();
            lab.setId(Integer.parseInt(rs.getString("id")));
            lab.setAndar(rs.getInt("andar"));
            lab.setPredio(rs.getString("predio"));
            lab.setSituacao(rs.getString("situacao"));
            lab.setNumLugares(rs.getInt("numlugares"));
            lab.setNumBancadas(rs.getInt("numbancadas"));
            lab.setTipo(rs.getString("tipo"));
            lab.setSituacao(rs.getString("situacao"));

            minhaLista.add(lab);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }

    public List<Laboratorio> getListaLabs() throws SQLException {

        String sql = "select *from laboratorio "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Laboratorio> minhaLista = new ArrayList<Laboratorio>();

        while (rs.next()) {
            Laboratorio lab = new Laboratorio();
            lab.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            lab.setAndar(rs.getInt("andar"));
            lab.setPredio(rs.getString("predio"));
            lab.setSituacao(rs.getString("situacao"));
            lab.setNumLugares(rs.getInt("numlugares"));
            lab.setNumBancadas(rs.getInt("numbancadas"));
            lab.setTipo(rs.getString("tipo"));
            //lab.setSituacao(rs.getString("situacao"));

            minhaLista.add(lab);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }

     public List<Laboratorio> getListaLabsDisponiveis() throws SQLException {

        String sql = "select *from laboratorio where situacao = 'disponivel' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Laboratorio> minhaLista = new ArrayList<Laboratorio>();

        while (rs.next()) {
            Laboratorio lab = new Laboratorio();
            lab.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            lab.setAndar(rs.getInt("andar"));
            lab.setPredio(rs.getString("predio"));
            lab.setSituacao(rs.getString("situacao"));
            lab.setNumLugares(rs.getInt("numlugares"));
            lab.setNumBancadas(rs.getInt("numbancadas"));
            lab.setTipo(rs.getString("tipo"));
            //lab.setSituacao(rs.getString("situacao"));

            minhaLista.add(lab);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
     public List<Laboratorio> getListaLabsAlugados() throws SQLException {

        String sql = "select *from laboratorio where situacao = 'alugado' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Laboratorio> minhaLista = new ArrayList<Laboratorio>();

        while (rs.next()) {
            Laboratorio lab = new Laboratorio();
            lab.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            lab.setAndar(rs.getInt("andar"));
            lab.setPredio(rs.getString("predio"));
            lab.setSituacao(rs.getString("situacao"));
            lab.setNumLugares(rs.getInt("numlugares"));
            lab.setNumBancadas(rs.getInt("numbancadas"));
            lab.setTipo(rs.getString("tipo"));
            //lab.setSituacao(rs.getString("situacao"));

            minhaLista.add(lab);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
     public List<Laboratorio> getListaLabsInfo() throws SQLException {

        String sql = "select *from laboratorio where tipo = 'Informática' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Laboratorio> minhaLista = new ArrayList<Laboratorio>();

        while (rs.next()) {
            Laboratorio lab = new Laboratorio();
            lab.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            lab.setAndar(rs.getInt("andar"));
            lab.setPredio(rs.getString("predio"));
            lab.setSituacao(rs.getString("situacao"));
            lab.setNumLugares(rs.getInt("numlugares"));
            lab.setNumBancadas(rs.getInt("numbancadas"));
            lab.setTipo(rs.getString("tipo"));
            //lab.setSituacao(rs.getString("situacao"));

            minhaLista.add(lab);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
    public List<Laboratorio> getListaLabsQuim() throws SQLException {

        String sql = "select *from laboratorio where tipo = 'Química' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Laboratorio> minhaLista = new ArrayList<Laboratorio>();

        while (rs.next()) {
            Laboratorio lab = new Laboratorio();
            lab.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            lab.setAndar(rs.getInt("andar"));
            lab.setPredio(rs.getString("predio"));
            lab.setSituacao(rs.getString("situacao"));
            lab.setNumLugares(rs.getInt("numlugares"));
            lab.setNumBancadas(rs.getInt("numbancadas"));
            lab.setTipo(rs.getString("tipo"));
            //lab.setSituacao(rs.getString("situacao"));

            minhaLista.add(lab);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
    public List<Laboratorio> getListaLabsEletro() throws SQLException {

        String sql = "select *from laboratorio where tipo = 'Eletrônica' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Laboratorio> minhaLista = new ArrayList<Laboratorio>();

        while (rs.next()) {
            Laboratorio lab = new Laboratorio();
            lab.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            lab.setAndar(rs.getInt("andar"));
            lab.setPredio(rs.getString("predio"));
            lab.setSituacao(rs.getString("situacao"));
            lab.setNumLugares(rs.getInt("numlugares"));
            lab.setNumBancadas(rs.getInt("numbancadas"));
            lab.setTipo(rs.getString("tipo"));
            //lab.setSituacao(rs.getString("situacao"));

            minhaLista.add(lab);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
    public List<Laboratorio> getListaLabsFis() throws SQLException {

        String sql = "select *from laboratorio where tipo = 'Física' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Laboratorio> minhaLista = new ArrayList<Laboratorio>();

        while (rs.next()) {
            Laboratorio lab = new Laboratorio();
            lab.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            lab.setAndar(rs.getInt("andar"));
            lab.setPredio(rs.getString("predio"));
            lab.setSituacao(rs.getString("situacao"));
            lab.setNumLugares(rs.getInt("numlugares"));
            lab.setNumBancadas(rs.getInt("numbancadas"));
            lab.setTipo(rs.getString("tipo"));
            //lab.setSituacao(rs.getString("situacao"));

            minhaLista.add(lab);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
     public List<Sala> getListaIDS(int id) throws SQLException {

        String sql = "select *from sala where id like ? "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        stmt.setInt(1, id);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Sala> minhaLista = new ArrayList<Sala>();

        while (rs.next()) {
            Sala sala = new Sala();
            sala.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            sala.setAndar(rs.getInt("andar"));
            sala.setPredio(rs.getString("predio"));
            sala.setSituacao(rs.getString("situacao"));
            sala.setNumLugares(rs.getInt("numlugares"));
            sala.setTipo(rs.getString("tipo"));
            sala.setSituacao(rs.getString("situacao"));

            minhaLista.add(sala);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }

     public List<Sala> getListaTodasSalas() throws SQLException {

        String sql = "select *from sala "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Sala> minhaLista = new ArrayList<Sala>();

        while (rs.next()) {
            Sala sala = new Sala();
            sala.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            sala.setAndar(rs.getInt("andar"));
            sala.setPredio(rs.getString("predio"));
            sala.setSituacao(rs.getString("situacao"));
            sala.setNumLugares(rs.getInt("numlugares"));
            sala.setTipo(rs.getString("tipo"));
            sala.setSituacao(rs.getString("situacao"));

            minhaLista.add(sala);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
     public List<Sala> getListaSalaAula() throws SQLException {

        String sql = "select *from sala where tipo = 'sala de aula' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Sala> minhaLista = new ArrayList<Sala>();

        while (rs.next()) {
            Sala sala = new Sala();
            sala.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            sala.setAndar(rs.getInt("andar"));
            sala.setPredio(rs.getString("predio"));
            sala.setSituacao(rs.getString("situacao"));
            sala.setNumLugares(rs.getInt("numlugares"));
            sala.setTipo(rs.getString("tipo"));
            sala.setSituacao(rs.getString("situacao"));

            minhaLista.add(sala);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
      public List<Sala> getListaSalaReuniao() throws SQLException {

        String sql = "select *from sala where tipo = 'sala de reuniao' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Sala> minhaLista = new ArrayList<Sala>();

        while (rs.next()) {
            Sala sala = new Sala();
            sala.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            sala.setAndar(rs.getInt("andar"));
            sala.setPredio(rs.getString("predio"));
            sala.setSituacao(rs.getString("situacao"));
            sala.setNumLugares(rs.getInt("numlugares"));
            sala.setTipo(rs.getString("tipo"));
            sala.setSituacao(rs.getString("situacao"));

            minhaLista.add(sala);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
    public List<Sala> getListaSalaAud() throws SQLException {

        String sql = "select *from sala where tipo = 'auditorio' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Sala> minhaLista = new ArrayList<Sala>();

        while (rs.next()) {
            Sala sala = new Sala();
            sala.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            sala.setAndar(rs.getInt("andar"));
            sala.setPredio(rs.getString("predio"));
            sala.setSituacao(rs.getString("situacao"));
            sala.setNumLugares(rs.getInt("numlugares"));
            sala.setTipo(rs.getString("tipo"));
            sala.setSituacao(rs.getString("situacao"));

            minhaLista.add(sala);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
   public List<Sala> getListaSalaDisponivel() throws SQLException {

        String sql = "select *from sala where situacao = 'disponivel' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Sala> minhaLista = new ArrayList<Sala>();

        while (rs.next()) {
            Sala sala = new Sala();
            sala.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            sala.setAndar(rs.getInt("andar"));
            sala.setPredio(rs.getString("predio"));
            sala.setSituacao(rs.getString("situacao"));
            sala.setNumLugares(rs.getInt("numlugares"));
            sala.setTipo(rs.getString("tipo"));
            sala.setSituacao(rs.getString("situacao"));

            minhaLista.add(sala);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }
   public List<Sala> getListaSalaAlugada() throws SQLException {

        String sql = "select *from sala where situacao = 'alugada' "; //seleciona tudo apenas do contato que for igual ao nome passado como parametro
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql); //prepara a conexao com BD
        //stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();//executa o que esta encima. ele sempre retorna algo do tipo resultSet...è um ponteiro que anda pela tabela

        List<Sala> minhaLista = new ArrayList<Sala>();

        while (rs.next()) {
            Sala sala = new Sala();
            sala.setId(Integer.parseInt(rs.getString("id"))); //"Long.valueOF" é um parse para o id
            sala.setAndar(rs.getInt("andar"));
            sala.setPredio(rs.getString("predio"));
            sala.setSituacao(rs.getString("situacao"));
            sala.setNumLugares(rs.getInt("numlugares"));
            sala.setTipo(rs.getString("tipo"));
            sala.setSituacao(rs.getString("situacao"));

            minhaLista.add(sala);
        }
        rs.close();
        stmt.close();
        return minhaLista;
    }

}
